#pragma once

namespace Utility
{
	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	String Copy	</Summary>
	///
	/// <Param name="str">	The string to be copied </Param>
	///
	/// <Return>	A copy of the passed in string </Return>
	///
	/// <Remarks>	
	///		This function calls new[] to create the data, you must remember to delete it
	///	</Remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	char* StrCpy(const char* const str);

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <Summary>	Create Hash	</Summary>
	///
	/// <Param name="str">	The string to be referenced for the hash code </Param>
	///
	/// <Return>	The newly created hash code </Return>
	////////////////////////////////////////////////////////////////////////////////////////////////////
	unsigned long CreateHash(const char* str);

	unsigned int HashFuncInt(const int& num);
	unsigned int HashFuncShort(const short& num);
	unsigned int HashFuncLong(const long& num);
	unsigned int HashFuncUInt(const unsigned int& num);
	unsigned int HashFuncUShort(const unsigned short& num);
	unsigned int HashFuncULong(const unsigned long& num);
};